package com.unitd.frame.comm.utils.encrypt.base64.encoder;

import java.io.IOException;
import java.io.OutputStream;

/**
 * @desc Base64编码的编/解码接口类
 * 主要用于编码和解码字节数组(通常用于二进制数据与7位的ASCII编码之间进行转换)
 * @filename IEncoder.java
 * @copyright www.pactera.com.cn
 * @author Hudan
 * @version 1.0
 * @date 2016/10/27
 */
public interface IEncoder {

	/**
	 * @desc 编码
	 * @param data 需要进行转码的字节数组
	 * @param off 游标
	 * @param length 长度
	 * @param out 输出流
	 * @return
	 * @throws IOException
	 */
	int encode(byte[] data, int off, int length, OutputStream out) throws IOException;

	/**
	 * @desc 解码
	 * @param data 需要进行解码的base64编码数组
	 * @param off 游标
	 * @param length 长度
	 * @param out 输出流
	 * @return
	 * @throws IOException
	 */
	int decode(byte[] data, int off, int length, OutputStream out) throws IOException;

	/**
	 * @desc 解码
	 * @param data 需要进行解码的base64编码字符串
	 * @param out 输出流
	 * @return
	 * @throws IOException
	 */
	int decode(String data, OutputStream out) throws IOException;
}